The X Windows System (hereinafter called simply xe2x80x9cXxe2x80x9d) is the standard windowing system used for Unix workstations. It is prized for its flexibility concerning configuration issues, as well as its ability to display images over a network.
Just as a human organization that conducts or attends events scheduled on a calendar finds it convenient (even necessary!) to require there to be one master calendar administered by a single authority empowered to resolve conflicts, a windowing system for a computer needs one agency that determines where the windows are located, which ones are totally or partially obscured, and that generally administers the rules for window operations. X is no exception, and each workstation has a server, called the xe2x80x9cX Serverxe2x80x9d, or by some people simply xe2x80x9cCapital Xxe2x80x9d, that acts as the controlling agency for the window system. Applications that desire to create or destroy a window, display data in a window, take data from the keyboard, or take data from the existing content of a window, are called clients, and they request services from Capital X through calls to a library, such as Xlib. The slogan is xe2x80x9cCapital X owns the frame bufferxe2x80x9d, and it implies that nothing is displayed unless the X Server put it into the frame buffer.
X supports a feature set concerning multiple monitors connected to a workstation. This is useful with certain applications that involved either a large amount of data or several disparate types of data. (An example is an integrated circuit design and simulation package where one window contains a high level definition of the circuit""s functionality, one contains a description of the resulting device level implementation, one contains a simulated waveform display for that device level implementation, and one contains a definition of simulation parameters, such as supply voltage, clock frequency, etc.) Originally, a window could neither span two or more monitors nor be moved between them at will; it had to be displayed as a complete item within the screen of a single monitor selected in advance. A recent extension to X was the development of Single Logical Screen, or SLS. SLS allows specific arrangements of two, three or four monitors (and their associated frame buffers) to cooperate as if they were one giant monitor and frame buffer within which windows can be arbitrarily positioned and re-positioned, even if they span the physical boundaries of the actual component monitors and frame buffers.
The SLS scheme described above offers adequate performance for 2D operations. Top of the line 3D graphics packages (say, PEX and OpenGL) cooperate with hardware graphics accelerators that expect to write their output images directly to the frame buffer themselves. To facilitate this, a mode of operation called Direct Hardware Access (DHA) was added as an extension to non-SLS X. Through a registration process an xe2x80x9caccelerated windowxe2x80x9d can be defined wherein the 3D libraries themselves can find out the location of the frame buffer and write directly to it. An additional communication path between the application and Capital X keeps track of housekeeping issues, such as obscured regions. This scheme works well, but does not deal with a multiplicity of monitors and their frame buffers. At present, 3D applications render to SLS windows using a virtual memory driver, which is unacceptably slow. It would be desirable if 3D applications could use the DHA mechanism for accelerated windows in the SLS environment.
The subject matter of the present application may be viewed as an extension of that disclosed in an allowed but not yet issued Patent Application bearing Ser. No. 08/584,755, entitled A DESIGN AND METHOD FOR A LARGE, VIRTUAL WORKSPACE, filed by Walls, Elliot and Marks on Jan. 10, 1996 and assigned to Hewlett-Packard Co. That application concerns X Windows and the extension thereto that we have termed SLS, but does not contemplate what to do for systems having a graphics accelerator and wishing to use DHA. Nevertheless, it contains useful background information about X in general and specific implementation details concerning SLS in particular, and, since herein we extend SLS, is for that reason and the sake of brevity hereby incorporated by reference.
For further background information about the standard X Server, the reader is advised to consult a treatise such as THE X WINDOW SYSTEM SERVER by Elias Israel and Erik Fortune (1992, Digital Press, ISBN: 1-55558-096-3). For in-depth treatment about X in general, any of a variety of standard works from O""Reilly and Associates, Inc. are recommended. The following three books may also be of interest, each published by Addison-Wesley: OpenGL Programming for the X Window System, by Mark J. Kilgard (ISBN 0-201-48359-9); OpenGL Programming Guide, by Neider, Davis and Woo (ISBN 0-201-63274-8); and OpenGL Reference Manual, by the OpenGL Architecture Review Board (ISBN 0-201-632764).
A solution to the problem of combining SLS and DHA in a 3D environment is to pass a single stream of protocol to the X Server, which in turn passes the information to multiple 3D rendering processes for display on individual screens (monitors). Multiple instances of a single daemon implement the rendering processes. The X Server communicates with an instance of the daemon functioning as a master daemon, which in turn controls the remaining instances functioning as slave daemons. All daemons communicate through common shared memory segments. This achieves both efficiency and performance, since duplicated distribution of commands and data is avoided. Each of the daemons is driven by the contents of the shared memory segments. To facilitate this, an X Client, the X Server and the daemons are all interconnected with separate control and data paths.